// should be used with the goleri module.
//
// Source class: SiriGrammar
-// Created at: 2018-03-30 13:58:06
+// Created at: 2018-03-30 21:57:58
import (
"regexp"
GidDropShards = iota
GidDropStmt = iota
GidDropUser = iota
+ GidFAll = iota
GidFCount = iota
GidFDerivative = iota
GidFDifference = iota
GidKActiveHandles = iota
GidKAddress = iota
GidKAfter = iota
+ GidKAll = iota
GidKAlter = iota
GidKAnd = iota
GidKAs = iota
GidSelectAggregate = iota
GidSelectAggregates = iota
GidSelectStmt = iota
+ GidSeriesAll = iota
GidSeriesColumns = iota
GidSeriesMatch = iota
GidSeriesName = iota
kActiveHandles := goleri.NewKeyword(GidKActiveHandles, "active_handles", false)
kAddress := goleri.NewKeyword(GidKAddress, "address", false)
kAfter := goleri.NewKeyword(GidKAfter, "after", false)
+ kAll := goleri.NewKeyword(GidKAll, "all", false)
kAlter := goleri.NewKeyword(GidKAlter, "alter", false)
kAnd := goleri.NewKeyword(GidKAnd, "and", false)
kAs := goleri.NewKeyword(GidKAs, "as", false)
kIntersection,
kSymmetricDifference,
)
+ seriesAll := goleri.NewChoice(
+ GidSeriesAll,
+ false,
+ goleri.NewToken(NoGid, "*"),
+ kAll,
+ )
seriesName := goleri.NewRepeat(GidSeriesName, string, 1, 1)
groupName := goleri.NewRepeat(GidGroupName, rGraveStr, 1, 1)
seriesRe := goleri.NewRepeat(GidSeriesRe, rRegex, 1, 1)
seriesMatch := goleri.NewList(GidSeriesMatch, goleri.NewChoice(
NoGid,
false,
+ seriesAll,
seriesName,
groupMatch,
seriesRe,
kSuffix,
string,
)
- fPoints := goleri.NewChoice(
- GidFPoints,
+ fAll := goleri.NewChoice(
+ GidFAll,
false,
goleri.NewToken(NoGid, "*"),
- kPoints,
+ kAll,
)
+ fPoints := goleri.NewRepeat(GidFPoints, kPoints, 1, 1)
fDifference := goleri.NewSequence(
GidFDifference,
kDifference,
aggregateFunctions := goleri.NewList(GidAggregateFunctions, goleri.NewChoice(
NoGid,
false,
- fPoints,
+ fAll,
fLimit,
fMean,
fSum,
fDifference,
fDerivative,
fFilter,
+ fPoints,
), goleri.NewToken(NoGid, "=>"), 1, 0, false)
selectAggregate := goleri.NewSequence(
GidSelectAggregate,
), goleri.NewToken(NoGid, ","), 0, 0, false),
)
timeitStmt := goleri.NewRepeat(GidTimeitStmt, kTimeit, 1, 1)
- helpShow := goleri.NewKeyword(GidHelpShow, "show", false)
- helpNoaccess := goleri.NewKeyword(GidHelpNoaccess, "noaccess", false)
+ helpSelect := goleri.NewKeyword(GidHelpSelect, "select", false)
+ helpListGroups := goleri.NewKeyword(GidHelpListGroups, "groups", false)
+ helpListPools := goleri.NewKeyword(GidHelpListPools, "pools", false)
+ helpListShards := goleri.NewKeyword(GidHelpListShards, "shards", false)
+ helpListUsers := goleri.NewKeyword(GidHelpListUsers, "users", false)
+ helpListServers := goleri.NewKeyword(GidHelpListServers, "servers", false)
+ helpListSeries := goleri.NewKeyword(GidHelpListSeries, "series", false)
+ helpList := goleri.NewSequence(
+ GidHelpList,
+ kList,
+ goleri.NewOptional(NoGid, goleri.NewChoice(
+ NoGid,
+ true,
+ helpListGroups,
+ helpListPools,
+ helpListShards,
+ helpListUsers,
+ helpListServers,
+ helpListSeries,
+ )),
+ )
+ helpAccess := goleri.NewKeyword(GidHelpAccess, "access", false)
helpRevoke := goleri.NewKeyword(GidHelpRevoke, "revoke", false)
- helpDropUser := goleri.NewKeyword(GidHelpDropUser, "user", false)
helpDropGroup := goleri.NewKeyword(GidHelpDropGroup, "group", false)
+ helpDropSeries := goleri.NewKeyword(GidHelpDropSeries, "series", false)
+ helpDropUser := goleri.NewKeyword(GidHelpDropUser, "user", false)
helpDropServer := goleri.NewKeyword(GidHelpDropServer, "server", false)
helpDropShards := goleri.NewKeyword(GidHelpDropShards, "shards", false)
- helpDropSeries := goleri.NewKeyword(GidHelpDropSeries, "series", false)
helpDrop := goleri.NewSequence(
GidHelpDrop,
kDrop,
goleri.NewOptional(NoGid, goleri.NewChoice(
NoGid,
true,
- helpDropUser,
helpDropGroup,
+ helpDropSeries,
+ helpDropUser,
helpDropServer,
helpDropShards,
- helpDropSeries,
)),
)
- helpAlterUser := goleri.NewKeyword(GidHelpAlterUser, "user", false)
- helpAlterServers := goleri.NewKeyword(GidHelpAlterServers, "servers", false)
- helpAlterDatabase := goleri.NewKeyword(GidHelpAlterDatabase, "database", false)
- helpAlterGroup := goleri.NewKeyword(GidHelpAlterGroup, "group", false)
- helpAlterServer := goleri.NewKeyword(GidHelpAlterServer, "server", false)
- helpAlter := goleri.NewSequence(
- GidHelpAlter,
- kAlter,
+ helpCreateUser := goleri.NewKeyword(GidHelpCreateUser, "user", false)
+ helpCreateGroup := goleri.NewKeyword(GidHelpCreateGroup, "group", false)
+ helpCreate := goleri.NewSequence(
+ GidHelpCreate,
+ kCreate,
goleri.NewOptional(NoGid, goleri.NewChoice(
NoGid,
true,
- helpAlterUser,
- helpAlterServers,
- helpAlterDatabase,
- helpAlterGroup,
- helpAlterServer,
+ helpCreateUser,
+ helpCreateGroup,
)),
)
- helpSelect := goleri.NewKeyword(GidHelpSelect, "select", false)
- helpTimezones := goleri.NewKeyword(GidHelpTimezones, "timezones", false)
helpCountGroups := goleri.NewKeyword(GidHelpCountGroups, "groups", false)
helpCountPools := goleri.NewKeyword(GidHelpCountPools, "pools", false)
- helpCountSeries := goleri.NewKeyword(GidHelpCountSeries, "series", false)
+ helpCountShards := goleri.NewKeyword(GidHelpCountShards, "shards", false)
helpCountUsers := goleri.NewKeyword(GidHelpCountUsers, "users", false)
helpCountServers := goleri.NewKeyword(GidHelpCountServers, "servers", false)
- helpCountShards := goleri.NewKeyword(GidHelpCountShards, "shards", false)
+ helpCountSeries := goleri.NewKeyword(GidHelpCountSeries, "series", false)
helpCount := goleri.NewSequence(
GidHelpCount,
kCount,
true,
helpCountGroups,
helpCountPools,
- helpCountSeries,
+ helpCountShards,
helpCountUsers,
helpCountServers,
- helpCountShards,
+ helpCountSeries,
)),
)
- helpFunctions := goleri.NewKeyword(GidHelpFunctions, "functions", false)
- helpCreateUser := goleri.NewKeyword(GidHelpCreateUser, "user", false)
- helpCreateGroup := goleri.NewKeyword(GidHelpCreateGroup, "group", false)
- helpCreate := goleri.NewSequence(
- GidHelpCreate,
- kCreate,
+ helpNoaccess := goleri.NewKeyword(GidHelpNoaccess, "noaccess", false)
+ helpAlterServer := goleri.NewKeyword(GidHelpAlterServer, "server", false)
+ helpAlterDatabase := goleri.NewKeyword(GidHelpAlterDatabase, "database", false)
+ helpAlterGroup := goleri.NewKeyword(GidHelpAlterGroup, "group", false)
+ helpAlterServers := goleri.NewKeyword(GidHelpAlterServers, "servers", false)
+ helpAlterUser := goleri.NewKeyword(GidHelpAlterUser, "user", false)
+ helpAlter := goleri.NewSequence(
+ GidHelpAlter,
+ kAlter,
goleri.NewOptional(NoGid, goleri.NewChoice(
NoGid,
true,
- helpCreateUser,
- helpCreateGroup,
+ helpAlterServer,
+ helpAlterDatabase,
+ helpAlterGroup,
+ helpAlterServers,
+ helpAlterUser,
)),
)
- helpGrant := goleri.NewKeyword(GidHelpGrant, "grant", false)
+ helpShow := goleri.NewKeyword(GidHelpShow, "show", false)
+ helpTimezones := goleri.NewKeyword(GidHelpTimezones, "timezones", false)
helpTimeit := goleri.NewKeyword(GidHelpTimeit, "timeit", false)
- helpAccess := goleri.NewKeyword(GidHelpAccess, "access", false)
- helpListSeries := goleri.NewKeyword(GidHelpListSeries, "series", false)
- helpListServers := goleri.NewKeyword(GidHelpListServers, "servers", false)
- helpListPools := goleri.NewKeyword(GidHelpListPools, "pools", false)
- helpListUsers := goleri.NewKeyword(GidHelpListUsers, "users", false)
- helpListGroups := goleri.NewKeyword(GidHelpListGroups, "groups", false)
- helpListShards := goleri.NewKeyword(GidHelpListShards, "shards", false)
- helpList := goleri.NewSequence(
- GidHelpList,
- kList,
- goleri.NewOptional(NoGid, goleri.NewChoice(
- NoGid,
- true,
- helpListSeries,
- helpListServers,
- helpListPools,
- helpListUsers,
- helpListGroups,
- helpListShards,
- )),
- )
+ helpGrant := goleri.NewKeyword(GidHelpGrant, "grant", false)
+ helpFunctions := goleri.NewKeyword(GidHelpFunctions, "functions", false)
help := goleri.NewSequence(
GidHelp,
kHelp,
goleri.NewOptional(NoGid, goleri.NewChoice(
NoGid,
true,
- helpShow,
- helpNoaccess,
+ helpSelect,
+ helpList,
+ helpAccess,
helpRevoke,
helpDrop,
+ helpCreate,
+ helpCount,
+ helpNoaccess,
helpAlter,
- helpSelect,
+ helpShow,
helpTimezones,
- helpCount,
- helpFunctions,
- helpCreate,
- helpGrant,
helpTimeit,
- helpAccess,
- helpList,
+ helpGrant,
+ helpFunctions,
)),
)
START := goleri.NewSequence(
k_active_handles = Keyword('active_handles')
k_address = Keyword('address')
k_after = Keyword('after')
+ k_all = Keyword('all')
k_alter = Keyword('alter')
k_and = Keyword('and')
k_as = Keyword('as')
k_symmetric_difference,
most_greedy=False)
+ series_all = Choice(Token('*'), k_all, most_greedy=False)
series_name = Repeat(string, 1, 1)
group_name = Repeat(r_grave_str, 1, 1)
series_re = Repeat(r_regex, 1, 1)
uuid = Choice(r_uuid_str, string, most_greedy=False)
group_match = Repeat(r_grave_str, 1, 1)
series_match = List(
- Choice(Token('*'), series_name, group_match, series_re, most_greedy=False),
- series_sep, 1)
+ Choice(
+ series_all,
+ series_name,
+ group_match,
+ series_re,
+ most_greedy=False),
+ series_sep,
+ 1)
limit_expr = Sequence(k_limit, int_expr)
before_expr = Sequence(k_before, time_expr)
prefix_expr = Sequence(k_prefix, string)
suffix_expr = Sequence(k_suffix, string)
- f_points = Choice(
- Token('*'),
- k_points,
- most_greedy=False)
+ f_all = Choice(Token('*'), k_all, most_greedy=False)
+
+ f_points = Repeat(k_points, 1, 1) # DEPRECATED
f_difference = Sequence(
k_difference,
')')
aggregate_functions = List(Choice(
- f_points,
+ f_all,
f_limit,
f_mean,
f_sum,
f_difference,
f_derivative,
f_filter,
+ f_points,
most_greedy=False), '=>', 1)
select_aggregate = Sequence(
* should be used with the libcleri module.
*
* Source class: SiriGrammar
- * Created at: 2018-03-30 13:58:06
+ * Created at: 2018-03-30 21:57:58
*/
#ifndef CLERI_EXPORT_SIRI_GRAMMAR_GRAMMAR_H_
#define CLERI_EXPORT_SIRI_GRAMMAR_GRAMMAR_H_
CLERI_GID_DROP_SHARDS,
CLERI_GID_DROP_STMT,
CLERI_GID_DROP_USER,
+ CLERI_GID_F_ALL,
CLERI_GID_F_COUNT,
CLERI_GID_F_DERIVATIVE,
CLERI_GID_F_DIFFERENCE,
CLERI_GID_K_ACTIVE_HANDLES,
CLERI_GID_K_ADDRESS,
CLERI_GID_K_AFTER,
+ CLERI_GID_K_ALL,
CLERI_GID_K_ALTER,
CLERI_GID_K_AND,
CLERI_GID_K_AS,
CLERI_GID_SELECT_AGGREGATE,
CLERI_GID_SELECT_AGGREGATES,
CLERI_GID_SELECT_STMT,
+ CLERI_GID_SERIES_ALL,
CLERI_GID_SERIES_COLUMNS,
CLERI_GID_SERIES_MATCH,
CLERI_GID_SERIES_NAME,
break;
+ case CLERI_GID_F_ALL:
+ break;
+
case CLERI_GID_F_POINTS:
+ log_warning("Keyword 'points' is deprecated, "
+ "use '*' or 'all' instead.");
break;
default:
* should be used with the libcleri module.
*
* Source class: SiriGrammar
- * Created at: 2018-03-30 13:58:06
+ * Created at: 2018-03-30 21:57:58
*/
#include "siri/grammar/grammar.h"
cleri_t * k_active_handles = cleri_keyword(CLERI_GID_K_ACTIVE_HANDLES, "active_handles", CLERI_CASE_SENSITIVE);
cleri_t * k_address = cleri_keyword(CLERI_GID_K_ADDRESS, "address", CLERI_CASE_SENSITIVE);
cleri_t * k_after = cleri_keyword(CLERI_GID_K_AFTER, "after", CLERI_CASE_SENSITIVE);
+ cleri_t * k_all = cleri_keyword(CLERI_GID_K_ALL, "all", CLERI_CASE_SENSITIVE);
cleri_t * k_alter = cleri_keyword(CLERI_GID_K_ALTER, "alter", CLERI_CASE_SENSITIVE);
cleri_t * k_and = cleri_keyword(CLERI_GID_K_AND, "and", CLERI_CASE_SENSITIVE);
cleri_t * k_as = cleri_keyword(CLERI_GID_K_AS, "as", CLERI_CASE_SENSITIVE);
k_intersection,
k_symmetric_difference
);
+ cleri_t * series_all = cleri_choice(
+ CLERI_GID_SERIES_ALL,
+ CLERI_FIRST_MATCH,
+ 2,
+ cleri_token(CLERI_NONE, "*"),
+ k_all
+ );
cleri_t * series_name = cleri_dup(CLERI_GID_SERIES_NAME, string);
cleri_t * group_name = cleri_dup(CLERI_GID_GROUP_NAME, r_grave_str);
cleri_t * series_re = cleri_dup(CLERI_GID_SERIES_RE, r_regex);
cleri_t * series_match = cleri_list(CLERI_GID_SERIES_MATCH, cleri_choice(
CLERI_NONE,
CLERI_FIRST_MATCH,
- 3,
+ 4,
+ series_all,
series_name,
group_match,
series_re
k_suffix,
string
);
- cleri_t * f_points = cleri_choice(
- CLERI_GID_F_POINTS,
+ cleri_t * f_all = cleri_choice(
+ CLERI_GID_F_ALL,
CLERI_FIRST_MATCH,
2,
cleri_token(CLERI_NONE, "*"),
- k_points
+ k_all
);
+ cleri_t * f_points = cleri_dup(CLERI_GID_F_POINTS, k_points);
cleri_t * f_difference = cleri_sequence(
CLERI_GID_F_DIFFERENCE,
4,
cleri_t * aggregate_functions = cleri_list(CLERI_GID_AGGREGATE_FUNCTIONS, cleri_choice(
CLERI_NONE,
CLERI_FIRST_MATCH,
- 18,
- f_points,
+ 19,
+ f_all,
f_limit,
f_mean,
f_sum,
f_last,
f_difference,
f_derivative,
- f_filter
+ f_filter,
+ f_points
), cleri_token(CLERI_NONE, "=>"), 1, 0, 0);
cleri_t * select_aggregate = cleri_sequence(
CLERI_GID_SELECT_AGGREGATE,
), cleri_token(CLERI_NONE, ","), 0, 0, 0)
);
cleri_t * timeit_stmt = cleri_dup(CLERI_GID_TIMEIT_STMT, k_timeit);
- cleri_t * help_show = cleri_keyword(CLERI_GID_HELP_SHOW, "show", CLERI_CASE_SENSITIVE);
- cleri_t * help_noaccess = cleri_keyword(CLERI_GID_HELP_NOACCESS, "noaccess", CLERI_CASE_SENSITIVE);
+ cleri_t * help_select = cleri_keyword(CLERI_GID_HELP_SELECT, "select", CLERI_CASE_SENSITIVE);
+ cleri_t * help_list_groups = cleri_keyword(CLERI_GID_HELP_LIST_GROUPS, "groups", CLERI_CASE_SENSITIVE);
+ cleri_t * help_list_pools = cleri_keyword(CLERI_GID_HELP_LIST_POOLS, "pools", CLERI_CASE_SENSITIVE);
+ cleri_t * help_list_shards = cleri_keyword(CLERI_GID_HELP_LIST_SHARDS, "shards", CLERI_CASE_SENSITIVE);
+ cleri_t * help_list_users = cleri_keyword(CLERI_GID_HELP_LIST_USERS, "users", CLERI_CASE_SENSITIVE);
+ cleri_t * help_list_servers = cleri_keyword(CLERI_GID_HELP_LIST_SERVERS, "servers", CLERI_CASE_SENSITIVE);
+ cleri_t * help_list_series = cleri_keyword(CLERI_GID_HELP_LIST_SERIES, "series", CLERI_CASE_SENSITIVE);
+ cleri_t * help_list = cleri_sequence(
+ CLERI_GID_HELP_LIST,
+ 2,
+ k_list,
+ cleri_optional(CLERI_NONE, cleri_choice(
+ CLERI_NONE,
+ CLERI_MOST_GREEDY,
+ 6,
+ help_list_groups,
+ help_list_pools,
+ help_list_shards,
+ help_list_users,
+ help_list_servers,
+ help_list_series
+ ))
+ );
+ cleri_t * help_access = cleri_keyword(CLERI_GID_HELP_ACCESS, "access", CLERI_CASE_SENSITIVE);
cleri_t * help_revoke = cleri_keyword(CLERI_GID_HELP_REVOKE, "revoke", CLERI_CASE_SENSITIVE);
- cleri_t * help_drop_user = cleri_keyword(CLERI_GID_HELP_DROP_USER, "user", CLERI_CASE_SENSITIVE);
cleri_t * help_drop_group = cleri_keyword(CLERI_GID_HELP_DROP_GROUP, "group", CLERI_CASE_SENSITIVE);
+ cleri_t * help_drop_series = cleri_keyword(CLERI_GID_HELP_DROP_SERIES, "series", CLERI_CASE_SENSITIVE);
+ cleri_t * help_drop_user = cleri_keyword(CLERI_GID_HELP_DROP_USER, "user", CLERI_CASE_SENSITIVE);
cleri_t * help_drop_server = cleri_keyword(CLERI_GID_HELP_DROP_SERVER, "server", CLERI_CASE_SENSITIVE);
cleri_t * help_drop_shards = cleri_keyword(CLERI_GID_HELP_DROP_SHARDS, "shards", CLERI_CASE_SENSITIVE);
- cleri_t * help_drop_series = cleri_keyword(CLERI_GID_HELP_DROP_SERIES, "series", CLERI_CASE_SENSITIVE);
cleri_t * help_drop = cleri_sequence(
CLERI_GID_HELP_DROP,
2,
CLERI_NONE,
CLERI_MOST_GREEDY,
5,
- help_drop_user,
help_drop_group,
+ help_drop_series,
+ help_drop_user,
help_drop_server,
- help_drop_shards,
- help_drop_series
+ help_drop_shards
))
);
- cleri_t * help_alter_user = cleri_keyword(CLERI_GID_HELP_ALTER_USER, "user", CLERI_CASE_SENSITIVE);
- cleri_t * help_alter_servers = cleri_keyword(CLERI_GID_HELP_ALTER_SERVERS, "servers", CLERI_CASE_SENSITIVE);
- cleri_t * help_alter_database = cleri_keyword(CLERI_GID_HELP_ALTER_DATABASE, "database", CLERI_CASE_SENSITIVE);
- cleri_t * help_alter_group = cleri_keyword(CLERI_GID_HELP_ALTER_GROUP, "group", CLERI_CASE_SENSITIVE);
- cleri_t * help_alter_server = cleri_keyword(CLERI_GID_HELP_ALTER_SERVER, "server", CLERI_CASE_SENSITIVE);
- cleri_t * help_alter = cleri_sequence(
- CLERI_GID_HELP_ALTER,
+ cleri_t * help_create_user = cleri_keyword(CLERI_GID_HELP_CREATE_USER, "user", CLERI_CASE_SENSITIVE);
+ cleri_t * help_create_group = cleri_keyword(CLERI_GID_HELP_CREATE_GROUP, "group", CLERI_CASE_SENSITIVE);
+ cleri_t * help_create = cleri_sequence(
+ CLERI_GID_HELP_CREATE,
2,
- k_alter,
+ k_create,
cleri_optional(CLERI_NONE, cleri_choice(
CLERI_NONE,
CLERI_MOST_GREEDY,
- 5,
- help_alter_user,
- help_alter_servers,
- help_alter_database,
- help_alter_group,
- help_alter_server
+ 2,
+ help_create_user,
+ help_create_group
))
);
- cleri_t * help_select = cleri_keyword(CLERI_GID_HELP_SELECT, "select", CLERI_CASE_SENSITIVE);
- cleri_t * help_timezones = cleri_keyword(CLERI_GID_HELP_TIMEZONES, "timezones", CLERI_CASE_SENSITIVE);
cleri_t * help_count_groups = cleri_keyword(CLERI_GID_HELP_COUNT_GROUPS, "groups", CLERI_CASE_SENSITIVE);
cleri_t * help_count_pools = cleri_keyword(CLERI_GID_HELP_COUNT_POOLS, "pools", CLERI_CASE_SENSITIVE);
- cleri_t * help_count_series = cleri_keyword(CLERI_GID_HELP_COUNT_SERIES, "series", CLERI_CASE_SENSITIVE);
+ cleri_t * help_count_shards = cleri_keyword(CLERI_GID_HELP_COUNT_SHARDS, "shards", CLERI_CASE_SENSITIVE);
cleri_t * help_count_users = cleri_keyword(CLERI_GID_HELP_COUNT_USERS, "users", CLERI_CASE_SENSITIVE);
cleri_t * help_count_servers = cleri_keyword(CLERI_GID_HELP_COUNT_SERVERS, "servers", CLERI_CASE_SENSITIVE);
- cleri_t * help_count_shards = cleri_keyword(CLERI_GID_HELP_COUNT_SHARDS, "shards", CLERI_CASE_SENSITIVE);
+ cleri_t * help_count_series = cleri_keyword(CLERI_GID_HELP_COUNT_SERIES, "series", CLERI_CASE_SENSITIVE);
cleri_t * help_count = cleri_sequence(
CLERI_GID_HELP_COUNT,
2,
6,
help_count_groups,
help_count_pools,
- help_count_series,
+ help_count_shards,
help_count_users,
help_count_servers,
- help_count_shards
+ help_count_series
))
);
- cleri_t * help_functions = cleri_keyword(CLERI_GID_HELP_FUNCTIONS, "functions", CLERI_CASE_SENSITIVE);
- cleri_t * help_create_user = cleri_keyword(CLERI_GID_HELP_CREATE_USER, "user", CLERI_CASE_SENSITIVE);
- cleri_t * help_create_group = cleri_keyword(CLERI_GID_HELP_CREATE_GROUP, "group", CLERI_CASE_SENSITIVE);
- cleri_t * help_create = cleri_sequence(
- CLERI_GID_HELP_CREATE,
+ cleri_t * help_noaccess = cleri_keyword(CLERI_GID_HELP_NOACCESS, "noaccess", CLERI_CASE_SENSITIVE);
+ cleri_t * help_alter_server = cleri_keyword(CLERI_GID_HELP_ALTER_SERVER, "server", CLERI_CASE_SENSITIVE);
+ cleri_t * help_alter_database = cleri_keyword(CLERI_GID_HELP_ALTER_DATABASE, "database", CLERI_CASE_SENSITIVE);
+ cleri_t * help_alter_group = cleri_keyword(CLERI_GID_HELP_ALTER_GROUP, "group", CLERI_CASE_SENSITIVE);
+ cleri_t * help_alter_servers = cleri_keyword(CLERI_GID_HELP_ALTER_SERVERS, "servers", CLERI_CASE_SENSITIVE);
+ cleri_t * help_alter_user = cleri_keyword(CLERI_GID_HELP_ALTER_USER, "user", CLERI_CASE_SENSITIVE);
+ cleri_t * help_alter = cleri_sequence(
+ CLERI_GID_HELP_ALTER,
2,
- k_create,
+ k_alter,
cleri_optional(CLERI_NONE, cleri_choice(
CLERI_NONE,
CLERI_MOST_GREEDY,
- 2,
- help_create_user,
- help_create_group
+ 5,
+ help_alter_server,
+ help_alter_database,
+ help_alter_group,
+ help_alter_servers,
+ help_alter_user
))
);
- cleri_t * help_grant = cleri_keyword(CLERI_GID_HELP_GRANT, "grant", CLERI_CASE_SENSITIVE);
+ cleri_t * help_show = cleri_keyword(CLERI_GID_HELP_SHOW, "show", CLERI_CASE_SENSITIVE);
+ cleri_t * help_timezones = cleri_keyword(CLERI_GID_HELP_TIMEZONES, "timezones", CLERI_CASE_SENSITIVE);
cleri_t * help_timeit = cleri_keyword(CLERI_GID_HELP_TIMEIT, "timeit", CLERI_CASE_SENSITIVE);
- cleri_t * help_access = cleri_keyword(CLERI_GID_HELP_ACCESS, "access", CLERI_CASE_SENSITIVE);
- cleri_t * help_list_series = cleri_keyword(CLERI_GID_HELP_LIST_SERIES, "series", CLERI_CASE_SENSITIVE);
- cleri_t * help_list_servers = cleri_keyword(CLERI_GID_HELP_LIST_SERVERS, "servers", CLERI_CASE_SENSITIVE);
- cleri_t * help_list_pools = cleri_keyword(CLERI_GID_HELP_LIST_POOLS, "pools", CLERI_CASE_SENSITIVE);
- cleri_t * help_list_users = cleri_keyword(CLERI_GID_HELP_LIST_USERS, "users", CLERI_CASE_SENSITIVE);
- cleri_t * help_list_groups = cleri_keyword(CLERI_GID_HELP_LIST_GROUPS, "groups", CLERI_CASE_SENSITIVE);
- cleri_t * help_list_shards = cleri_keyword(CLERI_GID_HELP_LIST_SHARDS, "shards", CLERI_CASE_SENSITIVE);
- cleri_t * help_list = cleri_sequence(
- CLERI_GID_HELP_LIST,
- 2,
- k_list,
- cleri_optional(CLERI_NONE, cleri_choice(
- CLERI_NONE,
- CLERI_MOST_GREEDY,
- 6,
- help_list_series,
- help_list_servers,
- help_list_pools,
- help_list_users,
- help_list_groups,
- help_list_shards
- ))
- );
+ cleri_t * help_grant = cleri_keyword(CLERI_GID_HELP_GRANT, "grant", CLERI_CASE_SENSITIVE);
+ cleri_t * help_functions = cleri_keyword(CLERI_GID_HELP_FUNCTIONS, "functions", CLERI_CASE_SENSITIVE);
cleri_t * help = cleri_sequence(
CLERI_GID_HELP,
2,
CLERI_NONE,
CLERI_MOST_GREEDY,
14,
- help_show,
- help_noaccess,
+ help_select,
+ help_list,
+ help_access,
help_revoke,
help_drop,
+ help_create,
+ help_count,
+ help_noaccess,
help_alter,
- help_select,
+ help_show,
help_timezones,
- help_count,
- help_functions,
- help_create,
- help_grant,
help_timeit,
- help_access,
- help_list
+ help_grant,
+ help_functions
))
);
cleri_t * START = cleri_sequence(
SIRIPARSER_NEXT_NODE
}
+static void enter_series_all(uv_async_t * handle)
+{
+ siridb_query_t * query = (siridb_query_t *) handle->data;
+ siridb_t * siridb = ((sirinet_socket_t *) query->client->data)->siridb;
+ cleri_node_t * node = query->nodes->node;
+ query_wrapper_t * q_wrapper = (query_wrapper_t *) query->data;
+
+ /* we must send this query to all pools */
+ if (q_wrapper->pmap != NULL)
+ {
+ imap_free(q_wrapper->pmap, NULL);
+ q_wrapper->pmap = NULL;
+ }
+
+ if (q_wrapper->update_cb != NULL)
+ {
+ (*q_wrapper->update_cb)(
+ q_wrapper->series_map,
+ q_wrapper->series_tmp,
+ (imap_free_cb) &siridb__series_decref);
+ }
+ q_wrapper->series_tmp = NULL;
+
+ uv_mutex_lock(&siridb->series_mutex);
+
+ q_wrapper->slist = imap_2slist_ref(
+ ( q_wrapper->update_cb == NULL ||
+ q_wrapper->update_cb == &imap_union_ref ||
+ q_wrapper->update_cb == &imap_symmetric_difference_ref) ?
+ siridb->series_map : q_wrapper->series_map);
+
+ uv_mutex_unlock(&siridb->series_mutex);
+
+ q_wrapper->series_tmp = (q_wrapper->update_cb == NULL) ?
+ q_wrapper->series_map : imap_new();
+
+ if (q_wrapper->slist == NULL || q_wrapper->series_tmp == NULL)
+ {
+ MEM_ERR_RET
+ }
+
+ uv_async_t * next =
+ (uv_async_t *) malloc(sizeof(uv_async_t));
+
+ if (next == NULL)
+ {
+ MEM_ERR_RET
+ }
+
+ next->data = handle->data;
+
+ uv_async_init(
+ siri.loop,
+ next,
+ (uv_async_cb) async_series_re);
+ uv_async_send(next);
+
+ uv_close((uv_handle_t *) handle, (uv_close_cb) free);
+ }
+
+ /* handle is handled or a signal is raised */
+}
+
static void enter_series_re(uv_async_t * handle)
{
siridb_query_t * query = (siridb_query_t *) handle->data;
q_select->points_map = imap_new();
}
- LOGC("exit series match %zu (%u)", q_select->nselects, q_select->flags);
-
SIRIPARSER_ASYNC_NEXT_NODE
}